package cn.itcast.service;

import cn.itcast.entity.PageResult;
import cn.itcast.entity.QueryPageBean;
import cn.itcast.pojo.CheckItem;
import cn.itcast.pojo.Menu;
import cn.itcast.pojo.User;

import java.util.List;

/**
 * The interface Menu service.
 */
public interface MenuService {

    /**
     * 新增菜单
     *
     * @param menu          the menu
     * @param permissionIds the permission ids
     */
    void add(Menu menu, Integer[] permissionIds);

    /**
     * 分页查询菜单数据
     *
     * @param currentPage the current page
     * @param pageSize    the page size
     * @param queryString the query string
     * @return page result
     */
    PageResult pageQuery(Integer currentPage, Integer pageSize, String queryString);

    /**
     * 根据id查询菜单基本信息
     *
     * @param id the id
     * @return menu
     */
    Menu findById(Integer id);

    /**
     * 查询菜单关联的权限数据
     *
     * @param permissionId the permission id
     * @return integer [ ]
     */
    Integer[] selectedPermissionId(Integer permissionId);

    /**
     * 更新菜单数据
     *
     * @param menu          the menu
     * @param permissionIds the permission ids
     */
    void update(Menu menu, Integer[] permissionIds);

    /**
     * 根据id删除菜单数据
     *
     * @param id the id
     */
    void deleteById(Integer id);

    /**
     * 查询所有菜单数据
     *
     * @return list
     */
    List<Menu> findAll();

    /**
     * 根据用户名查询所在菜单
     *
     * @param username the username
     * @return menu
     */
    Menu findRoleByUserName(String username);

    /**
     * 查询用户菜单信息
     *
     * @param id the id
     * @return list
     */
    List<Menu> findUserMenus(Integer id);

}

